package apuesta.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.google.gson.Gson;
import com.mysql.jdbc.EscapeTokenizer;

import apuesta.dto.DisciplinaDto;
import apuesta.dto.EquipoDto;
import apuesta.dto.EventoDto;
import apuesta.dto.EventoDto2;
import apuesta.dto.ResultadoDto2;
import apuesta.service.ApuestaService;
import apuesta.service.DisciplinaService;
import apuesta.service.EquipoService;
import apuesta.service.EstadoEventoService;
import apuesta.service.EventoService;
import apuesta.service.FinanzasService;
import apuesta.service.ResultadoService;
import apuesta.service.UsuarioService;
import apuesta.util.Ano;

/**
 * Servlet implementation class EventoServlet
 */
public class ApuestaServlet extends HttpServlet {

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		doProces(request, response);
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		doProces(request, response);
	}
	
	private void doProces(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException{
		PrintWriter out = response.getWriter();
		try{
			int accion = Integer.parseInt(request.getParameter("action"));
			if (accion == 1) {
				try{
					if(request.getSession().getAttribute("id") != null){
						// Registrar Evento
						int id_evento = Integer.parseInt(request.getParameter("id_evento"));
						int res_local = Integer.parseInt(request.getParameter("res_local"));
						int res_visita = Integer.parseInt(request.getParameter("res_visita"));
						String id_local = request.getParameter("id_local");
						String id_visita = request.getParameter("id_visita");
						String monto = request.getParameter("monto");
						String id_ususario = request.getSession().getAttribute("id")+"";
						
						String id_equipoapuesta = "";
						if(res_local > res_visita){
							System.out.println("local");
							id_equipoapuesta = id_local;
						}else if(res_local < res_visita){
							System.out.println("visita");
							id_equipoapuesta = id_visita;
						}
						boolean r = UsuarioService.actualizarCredito(id_ususario, Double.parseDouble(monto+""));
						System.out.println("respuesta: "+r);
						if(r){
							ApuestaService.registrarApuesta(id_evento,id_ususario, id_equipoapuesta, res_local, res_visita);
							EventoService.actualizarPozo(id_evento, monto);
							//FinanzasService.actualizarFinanzas(id_evento, Double.parseDouble(monto+"")*0.1);
							out.write("ok");
						}else{
							out.write("No hay credito suficionete para efectuar la apuesta");
						}
					}else{
						out.write("No esta logueado");
					}
				}catch(Exception ex){
					request.setAttribute("error", "Hubo un error al registrar el evento.");
					List<DisciplinaDto> disciplinas = DisciplinaService.lista_disciplinas();
					request.setAttribute("disciplinas", disciplinas);
					out.write("hubo un error, no se pudo registrar");
				}
				
				
			}else if(accion == 2){
				int ano = Integer.parseInt(request.getParameter("ano"));
				int mes = Integer.parseInt(request.getParameter("mes"));
				System.out.println("ano: "+ano+" mes: "+mes);
				if(mes == 0){
					Ano a = ApuestaService.apuestaAno(ano);
					Gson g = new Gson();
					out.write(g.toJson(a));
				}else{
					List l = ApuestaService.apuestasPorMes(mes, ano);
					Gson g = new Gson();
					out.write(g.toJson(l));
				}
				
			}else if(accion == 3){
				int ano = Integer.parseInt(request.getParameter("ano"));
				int mes = Integer.parseInt(request.getParameter("mes"));
				System.out.println("ano: "+ano+" mes: "+mes);
				List l = ApuestaService.apuestasPorMes2(mes, ano);
				Gson g = new Gson();
				out.write(g.toJson(l));
			
			}else if(accion == 4){
				String id_usuario = request.getSession().getAttribute("id")+"";
				
				List l = ApuestaService.apuestasPorUsuario(id_usuario);
				Gson g = new Gson();
				out.write(g.toJson(l));
			}else if(accion == 5){
				String id_usuario = request.getParameter("id_usuario")+"";
				String id_evento = request.getParameter("id_evento")+"";
				
				List<ResultadoDto2> r = ResultadoService.obtenerResultado(id_usuario, id_evento);
				Gson g = new Gson();
				out.write(g.toJson(r));
			}
		}catch(Exception e){
			System.err.println("Error eventoServlet: "+e);
		}finally{
			out.close();
		}
		
	}

}
